package net.moao.netutils.utils;

import android.app.Activity;
import android.content.DialogInterface;
import android.view.Gravity;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

import androidx.appcompat.app.AlertDialog;

import java.util.Objects;

/**
 * AlertDialogUtils
 *
 * @author Moao.Net
 * @DATE 2025/6/18
 */
public class AlertDialogUtils {
    public static final String TAG = "AlertDialogUtils";

    /**
     * 确认提示框 包含一个确认按钮，一个取消按钮
     * @param activity activity
     * @param msg 提示消息
     * @param colorText 提示消息文字颜色 activity.getResources().getColor(R.color.colorPrimaryText)
     * @param colorBackground 提示框 消息(TextView)背景颜色 activity.getResources().getColor(R.color.colorPrimaryText)
     * @param colorBackgroundDrawableResource 提示框背景图 R.drawable.text_view_tag_bg
     * @param btnConformName 确认按钮名称
     * @param btnConformOnclickListener 确认按钮点击事件
     * @param btnCancelName 取消按钮名称
     * @param btnCancelOnclickListener 取消按钮点击事件
     */
    public static void showCreateAlertDialog(Activity activity,
                                             String msg,
                                             int colorText, int colorBackground, int colorBackgroundDrawableResource,
                                             String btnConformName,
                                             DialogInterface.OnClickListener btnConformOnclickListener,
                                             String btnCancelName,
                                             DialogInterface.OnClickListener btnCancelOnclickListener){
        AlertDialog.Builder builder = new AlertDialog.Builder(activity);

        // 创建 TextView 并设置样式
        TextView textView = new TextView(activity);
        textView.setText(msg);
        textView.setTextSize(38); // 设置文字大小
        textView.setTextColor(colorText); // 设置文字颜色
        textView.setGravity(Gravity.CENTER); // 设置文字居中
        textView.setPadding(16, 16, 16, 16); // 设置内边距

        // 设置弹窗背景
        textView.setBackgroundResource(colorBackground);

        // 将 TextView 添加到弹窗中
        builder.setView(textView);

        // 设置确认按钮样式
        builder.setPositiveButton(btnConformName, btnConformOnclickListener);
        builder.setNegativeButton(btnCancelName, btnCancelOnclickListener);

        // 创建并显示对话框
        AlertDialog dialog = builder.create();

        // 设置弹窗的窗口背景
        Objects.requireNonNull(dialog.getWindow()).setBackgroundDrawableResource(colorBackgroundDrawableResource);

        dialog.show();

        // 修改按钮样式
        Button positiveButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
        Button negativeButton = dialog.getButton(DialogInterface.BUTTON_NEGATIVE);

        if (positiveButton != null) {
//            positiveButton.setBackgroundColor(colorBackground);
            positiveButton.setTextColor(colorText);
        }

        if (negativeButton != null) {
//            negativeButton.setBackgroundColor(colorBackground);
            negativeButton.setTextColor(colorText);
        }
    }


    /**
     * 带一个 输入框 的 提示框，确认按钮和取消按钮回调函数
     */
    public interface BtnOnclickListener {
        void BtnConformOnclickListener(DialogInterface dialogInterface, int i, String inputText);
        void BtnCancelOnclickListener(DialogInterface dialogInterface, int i, String inputText);
    }
    /**
     * 带一个 输入框 的提示框
     * @param activity activity
     * @param msg 提示信息
     * @param initEditTextString 输入框默认提示信息
     * @param colorText 文字颜色
     * @param colorBackground 提示信息 背景
     * @param colorBackgroundDrawableResource 提示框 背景
     * @param btnConformName 确认按钮名称
     * @param btnCancelName 取消按钮名称
     * @param btnOnclickListener 确认按钮和取消按钮的回调函数
     */
    public static void showCreateAlertDialogWithInput(Activity activity,
                                                      String msg, String initEditTextString,
                                                      int colorText, int colorBackground, int colorBackgroundDrawableResource,
                                                      String btnConformName,
                                                      String btnCancelName,
                                                      BtnOnclickListener btnOnclickListener) {
        AlertDialog.Builder builder = new AlertDialog.Builder(activity);

        // 创建 LinearLayout 并设置样式
        LinearLayout layout = new LinearLayout(activity);
        layout.setOrientation(LinearLayout.VERTICAL);
        layout.setPadding(16, 16, 16, 16);

        // 创建 TextView 并设置样式
        TextView textView = new TextView(activity);
        textView.setText(msg);
        textView.setTextSize(16); // 设置文字大小
        textView.setTextColor(colorText); // 设置文字颜色
        textView.setGravity(Gravity.CENTER); // 设置文字居中
        textView.setPadding(16, 16, 16, 16); // 设置内边距
        // 设置弹窗背景
        textView.setBackgroundColor(colorBackground);

        // 创建 EditText 并设置样式
        EditText editText = new EditText(activity);
        editText.setHint("请输入内容");
        editText.setTextSize(16); // 设置文字大小
        editText.setTextColor(colorText); // 设置文字颜色
        editText.setGravity(Gravity.CENTER); // 设置文字居中
        editText.setPadding(16, 16, 16, 16);
        editText.setText(initEditTextString);

        // 将 TextView 和 EditText 添加到布局中
        layout.addView(textView);
        layout.addView(editText);

        // 将布局添加到弹窗中
        builder.setView(layout);

        // 设置确认按钮样式
        builder.setPositiveButton(btnConformName, (dialogInterface, i) -> {
            // 在这里获取 EditText 的值
            String inputText = editText.getText().toString();
            // 调用回调接口
            if (btnOnclickListener != null) {
                btnOnclickListener.BtnConformOnclickListener(dialogInterface, i, inputText);
            }
        });
        builder.setNegativeButton(btnCancelName, (dialogInterface, i) -> {
            // 在这里获取 EditText 的值
            String inputText = editText.getText().toString();
            // 调用回调接口
            if (btnOnclickListener != null) {
                btnOnclickListener.BtnCancelOnclickListener(dialogInterface, i, inputText);
            }
        });

        // 创建并显示对话框
        AlertDialog dialog = builder.create();

        // 设置弹窗的窗口背景
        Objects.requireNonNull(dialog.getWindow()).setBackgroundDrawableResource(colorBackgroundDrawableResource);

        dialog.show();

        // 修改按钮样式
        Button positiveButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
        Button negativeButton = dialog.getButton(DialogInterface.BUTTON_NEGATIVE);

        if (positiveButton != null) {
//            positiveButton.setBackgroundColor(colorBackground);
            positiveButton.setTextColor(colorText);
        }

        if (negativeButton != null) {
//            negativeButton.setBackgroundColor(colorBackground);
            negativeButton.setTextColor(colorText);
        }
    }

    public static void showCreateAlertDialogBak(Activity activity, String msg, String btnConformName, DialogInterface.OnClickListener btnConformOnclickListener, String btnCancelName, DialogInterface.OnClickListener btnCancelOnclickListener){
        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
        LinearLayout layout = new LinearLayout(activity);
        TextView textView = new TextView(activity);
        textView.setText(msg);
        layout.addView(textView);
        builder.setView(layout);
        // 添加确认按钮
        builder.setPositiveButton(btnConformName, btnConformOnclickListener);
        // 添加取消按钮
        builder.setNegativeButton(btnCancelName, btnCancelOnclickListener);
        // 创建并显示对话框
        AlertDialog dialog = builder.create();
        dialog.show();
    }
}
